package cn.wuxun.user.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.jt.common.pojo.User;
import com.jt.common.utils.CookieUtils;
import com.jt.common.vo.SysResult;

import cn.wuxun.user.service.ManagerService;
import cn.wuxun.user.service.UserService;

/**
 * 对前台访问用户提供服务 实现前台访问的拦截
 * 
 * @author Tedu.BIG1903_01
 *
 */
@RestController
@RequestMapping("/user")
public class UserController {
	@Autowired
	UserService userService;
	@Autowired
	ManagerService managerService;
/**
 * 检查注册所用的username是否存在
 * @param userName
 * @return
 */
	@RequestMapping("checkUserName") //测通
	public SysResult checkUsername(String userName) {
		Integer exist = userService.checkUsername(userName);
		// 根据exist判断返回结果
		if (exist == 0) {// 不存在就是可用数据
			return SysResult.ok();
		} else {
			return SysResult.build(201, "已存在", null);
		}
	}

	/**
	 * @return 登录功能
	 */
	@RequestMapping("/login")//
	public SysResult login(User user, HttpServletRequest request, HttpServletResponse response) {
		// 调用业务层确定合法并且存储数据
		System.out.println("controller:"+user);
		String ticket = userService.doLogin(user);
		System.out.println("controller_ticket:"+ticket);
		// 控制层将业务层存储登录成功的rediskey值
		// !"".equals(ticket)&&ticket!=null
		if (StringUtils.isNotEmpty(ticket)) {//
			// ticket非空,redis存好登录的查询结果
			// 将ticket作为cookie的值返回 cookie
			// 的名称,调用Cookie工具类 //添加到cookie返回给前端
			CookieUtils.setCookie(request, response, "EM_TICKET", ticket);
			return SysResult.ok();
		} else {
			// 什么都不做直接返回失败
			return SysResult.build(201, "SHIBAI", null);
		}
	}

	// 通过cookie携带的ticket值查询redisuser数据
	@RequestMapping("/query/{ticket}")
	public SysResult checkLoginUser(@PathVariable String ticket) {
		String userJson = userService.queryUserJson(ticket);
		// 判断非空
		if (StringUtils.isNotEmpty(userJson)) {
			// 确实曾经登录过.也正在登录使用状态中
			return SysResult.build(200, "ok", userJson);
		} else {
			return SysResult.build(201, "", null);
		}
	}

	/**
	 * @return 注销功能
	 */
	@RequestMapping("/logout")
	public void logout(User user) {
		userService.logout(user);
	}

	/**
	 * @return 注册功能
	 */
	@RequestMapping("/regist")
	public SysResult regist(User user) {
		try {
			userService.userSave(user);
			return SysResult.ok();
		} catch (Exception e) {
			e.printStackTrace();
			return SysResult.build(201, e.getMessage(), null);
		}
	}

	/**
	 * @return 修改密码功能 验证旧密码 修改新密码
	 */
//	@RequestMapping("")
//	public void modifyPassword(User user) {
//
//		userService.modifyPassword(user);
//	}

	
}
